package jp.co.toshiba.ffsa.service.csde;

import java.util.List;

import jp.co.toshiba.ffsa.common.Crypto;

import org.seasar.extension.jdbc.JdbcManager;
import org.seasar.framework.beans.util.BeanMap;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;

/**
 * 設計I/F - プロジェクト一覧ビジネスロジック
 * @author npc
 */
public class Csde101Service {

    /** ユーザID */
    private String userId;

    /**
     * プロジェクト情報取得
     * @return プロジェクト情報
     * @throws Exception
     */
    public List<BeanMap> getProjectList() throws Exception {

        // S2Container初期化
        SingletonS2ContainerFactory.init();

        // S2ContainerからJdbcManagerを取得
        JdbcManager jdbcManager = SingletonS2Container.getComponent(JdbcManager.class);

        // プロジェクト情報取得
        List<BeanMap> resultList = jdbcManager.selectBySqlFile( BeanMap.class
                                                              , "data/selectProjectList.sql"
                                                              , userId
                                                              ).getResultList();

        for (BeanMap beanMap : resultList) {
            beanMap.put("projectId", Crypto.encrypt( beanMap.get("projectId").toString() )); // 機密情報を暗号化
        }

        return resultList;

    }

    /**
     * ワークフロー情報取得
     * @return ワークフロー情報
     * @throws Exception
     */
    public List<BeanMap> getWorkFlowList() throws Exception {

        // S2Container初期化
        SingletonS2ContainerFactory.init();

        // S2ContainerからJdbcManagerを取得
        JdbcManager jdbcManager = SingletonS2Container.getComponent(JdbcManager.class);

        try{
            // ワークフロー情報取得
            List<BeanMap> resultList = jdbcManager.selectBySqlFile( BeanMap.class
                                                                  , "data/selectWorkFlow.sql"
                                                                  ).getResultList();

            return resultList;

        }catch(Exception e){
            throw e;
        }
    }

    /**
     * ユーザーIDをセットする
     * @param userId
     */
    public void setUserId(String userId){this.userId = userId;}
}